;-----------------------------------------------------------------------;
; BILLS v1.2 Manual
; Copyright (c) 1993 William Forseth
;
; This is the help file for BILLS.EXE v1.2. It must be named BILLS.HLP,
; and must reside in the same directory as BILLS.EXE.
;
; If you have received this package and it is incomplete, or you get
; strange results when using this file from within BILLS, please let me
; know and I will send you the complete package. I can be reached at the
; first address at present, the second is a permanent mailing address:
;
;    823 10 Ave N, #10B                   2035 Lamborn Ave.
;    Fargo, ND  58102                     Superior, WI  54880
;    (701) 280-7090                       (715) 394-4577
;
;
; To print this file please use the option available for this in the Help
; Menu. This can be gotten at by starting up BILLS (simply enter 'bills'),
; then press 'u', then 'h', (then 'p' to print).
;-----------------------------------------------------------------------;
;    "      1 - Overview and Registration        I - Personal Codes",
;    "      2 - What it Does                     J - Calculator",
;    "      3 - Installing BILLS                 K - Scratch Pad",
;    "      4 - Getting Started                  L - General Editing Options",
;    "      5 - Startup Options                  M - Closing Window",
;    "      6 - Help and the Help File           N - Searching",
;    "      7 - How to Use the Menus             O - Sorting",
;    "      8 - What\'s a Record?                 P - Print this File",
;    "      9 - Viewing and Editing Records      Q - Saving Data",
;    "      0 - Adding New Records               R - (y/n) Permissions",
;    "      A - Adding Transactions              S - ? - Quick Help",
;    "      B - Purging / Unpurging Records      T - Merging / Splitting Files",
;    "      C - Printing                         U - Limits",
;    "      D - Data Files                       V - Interesting Fact",
;    "      E - Default Data File                W - Versions",
;    "      F - New Data Files                   X - Opening Time and Date",
;    "      G - More About Data Files            Y - Computer Requirements",
;    "      H - The Stat Line                    Z - Anomalies",
;-----------------------------------------------------------------------;

1
                   BILLS v1.2 - The Personal Bill Tracker
                     Copyright (c) 1993 William Forseth
                           c/o 2035 Lamborn Ave.
                            Superior, WI  54880
                   voice: (701) 280-7090   (715) 394-4577

  BILLS is a program that helps a person, family, or small business manage
  their bills. It was written with four things in mind:

  1 - To be an accurate, informative, and easy-to-use tracker of debts and
      payments. If you can get by on a word processor you should have no
      problem with BILLS.

  2 - To emphasize information accessing, arrangements and aids, not
      graphics. In keeping with the times it has little extra baggage. No
      color configurations, no mice, no multicolored laser printouts that
      require a printer costing more than your car.

  3 - To have clear directions available within the program itself.
@
  Overview - continued
  ──────────────────────────────────────────────────────────────────────────
  4 - To keep arbitrary decisions about legal input to a minimum. That is,
      if one wants to name a record "%^&*", they may do so. Likewise, if one
      wants records with the same names, or records with no information
      other than a name or an account number, this is also possible.

  What this means is that BILLS was designed and written to do a few things
  clearly and well, with few assumptions made about what the user should
  want to happen, and a minimum of fluff (there's an abundance of that
  around, anyway).

  BILLS is useful without being unnecessarily complex, needs a short initial
  learning time and little or no refresh time after periods of disuse. You
  can get in-and-out quickly - start it up, input your data, view the
  information, make decisions, save and quit in short time. Bill paying
  should not be drug out any longer than absolutely necessary.
@
  Overview - continued
  ──────────────────────────────────────────────────────────────────────────
  The unregistered version of BILLS, aside from the opening "nag" screen, is
  exactly the same as the registered version. See the next and subsequent
  pages for registration information, and information about Shareware.

          ┌─────────────────────────────────────────────────────────┐
          │ Please read all of the next section before registering. │
          └─────────────────────────────────────────────────────────┘

  Distributors are asked to obtain authorization from the author before they
  distribute this system, unless they are recognized by the ASP as adhering
  to the guidelines for Shareware distributors (but please notify me that
  you are distributing it, in this case).
@
  Registration
  ──────────────────────────────────────────────────────────────────────────
  BILLS is Shareware. What this means is that if you don't like it, it costs
  you nothing. If you want to pass it on to a friend or make copies of it,
  you are perfectly free to do so. If you do pass it on, please include all
  files (BILLS.EXE, BILLS.HLP, BILLS.BDB, BILLS.REG, README.EXE, BINST.EXE).
  You are asked not to charge any money for this program. Shareware
  distributors may charge their normal fee for a disk, but the author
  reserves the exclusive right to profit from his own work.

  If you use this program for a reasonable period of time and plan on
  continuing with it, you are asked to pay a registration fee. A "reasonable
  period of time" is pretty vague, but for a program like BILLS a 2-month
  period of use should tell one if it's useful to them or not. After this
  period, if you still want to use it but don't have the money to pay for
  it, please drop me a line and we'll make arrangements.
@
  Registration - continued
  ──────────────────────────────────────────────────────────────────────────
  The price I'm asking is $30.00, which isn't too high. When registering
  please specify what disk format you'd like (see BILLS.REG). If you
  discover a problem with the program - either logic or a bug - and it gets
  fixed your contribution will be acknowledged in all subsequent versions.

  In return for registering, you will receive:

              o  The latest version of BILLS (without the "nag" screen)
              o  Lifetime phone support
              o  Advance notice of and reduced rates for updates
              o  Bug notices and fixes

  When registering please use the form BILLS.REG, which is included in this
  package.
@
  Beta Testers
  ──────────────────────────────────────────────────────────────────────────
  No programming project is complete without a period of pre-release
  testing. Beta testing is mostly a thankless job, with one's input not
  always immediately appreciated (but always invaluable). Large software
  houses hire testers, send beta versions to universitys, BBS's or
  businesses, and generally have well organized avenues for testing and
  feedback. Shareware authors have friends, usually well experienced in
  particular areas, who graciously consent to pound on and evaluate the
  programs for nothing more than the fun of it. Without them most Shareware
  programs would never perform as well as they do. I'd like to thank the
  following beta testers for their input:

                           Gene and Tina Johnson
                            Dan and Ellen Pioro
                              Doreen Traiforos
@
  Friendly Disclaimer
  ──────────────────────────────────────────────────────────────────────────
  The trust one has in BILLS is mainly in its accuracy. It would not be
  advantageous for any author to produce software that gives incorrect
  results or causes problems to a user's system. In this case, it would be
  disastrous to write a program claiming to aid in bill paying, while giving
  inaccurate information. For this reason (and also because I rely on the
  program for my own bill paying) I have checked many times anything that
  could affect the accuracy of the output.

  THE USER, THOUGH, BY READING THIS DOCUMENTATION AND CONTINUING TO USE THIS
  PROGRAM, ACKNOWLEDGES THAT THEY, AND THEY ALONE, ARE RESPONSIBLE FOR ANY
  EFFECTS IT'S USE HAS ON THEM. FOR PROGRAMS THAT AFFECT ONE'S CASH FLOW
  THERE IS NOT NOW, NOR WILL THERE EVER BE, A COMPUTATIONAL SUBSTITUTE FOR
  COMMON SENSE. BILLS WAS WRITTEN TO BE AN AID IN THE BILL PAYING PROCESS,
  NOT A DECISION MAKER. ALL DECISIONS ON WHO GETS WHAT ARE THE USER'S ALONE.
@
  What is Shareware?
  ──────────────────────────────────────────────────────────────────────────
  Following is a definition of Shareware, and a standard disclaimer. This
  part of the document, while it contains no information about BILLS v1.2
  itself, does contain information that will hopefully clear up any
  confusion regarding Shareware vs. commercial software. If you have further
  questions about this, please contact me).

  Definition Of Shareware
  ───────────────────────
  Shareware distribution gives users a chance to try software before buying
  it. If you try a Shareware program and continue using it, you are expected
  to register. Individual programs differ on details - some request
  registration while others require it, some specify a maximum trial period.
  With registration, you get anything from the simple right to continue
  using the software to an updated program with printed manual.
@
  What is Shareware? - continued
  ──────────────────────────────────────────────────────────────────────────
  Copyright laws apply to both Shareware and commercial software, and the
  copyright holder retains all rights, with a few specific exceptions as
  stated below. Shareware authors are accomplished programmers, just like
  commercial authors, and the programs are of comparable quality. (In both
  cases, there are good programs and bad ones!) The main difference is in
  the method of distribution. The author specifically grants the right to
  copy and distribute the software, either to all and sundry or to a
  specific group. For example, some authors require written permission
  before a commercial disk vendor may copy their Shareware.

  Shareware is a distribution method, not a type of software. You should
  find software that suits your needs and pocketbook, whether it's
  commercial or Shareware. The Shareware system makes fitting your needs
  easier, because you can try before you buy. And because the overhead is
  low, prices are low also. Shareware has the ultimate money-back guarantee
  - if you don't use the product, you don't pay for it.
@
  Disclaimer / Agreement
  ──────────────────────────────────────────────────────────────────────────
  Users of BILLS v1.2 must accept this disclaimer of warranty:

  "BILLS V1.2 IS SUPPLIED AS IS.  THE AUTHOR DISCLAIMS ALL WARRANTIES,
  EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE WARRANTIES OF
  MERCHANTABILITY AND OF FITNESS FOR ANY PURPOSE. THE AUTHOR ASSUMES NO
  LIABILITY FOR DAMAGES, DIRECT OR CONSEQUENTIAL, WHICH MAY RESULT FROM THE
  USE OF BILLS V1.2."

  BILLS v1.2 is a "shareware program" and is provided at no charge to the
  user for evaluation.  Feel free to share it with your friends, but please
  do not give it away altered or as part of another system.  The essence of
  "user-supported" software is to provide personal computer users with
  quality software without high prices, and yet to provide incentive for
  programmers to continue to develop new products.
@
  Disclaimer / Agreement - continued
  ──────────────────────────────────────────────────────────────────────────
  If you find this program useful and find that you are using BILLS v1.2 and
  continue to use BILLS v1.2 after a reasonable trial period, you must make
  a registration payment of $30.00 to Bill Forseth.  The $30.00 registration
  fee will license one copy for use on any one computer at any one time. You
  must treat this software just like a book.  An example is that this
  software may be used by any number of people and may be freely moved from
  one computer location to another, so long as there is no possibility of it
  being used at one location while it's being used at another. Just as a
  book cannot be read by two different persons at the same time.

  Commercial users of BILLS v1.2 must register and pay for their copies of
  BILLS v1.2 within 60 days of first use or their license is withdrawn.
  Site-License arrangements may be made by contacting Bill Forseth.
@
  Disclaimer / Agreement - continued
  ──────────────────────────────────────────────────────────────────────────
  Anyone distributing BILLS v1.2 for any kind of remuneration must first
  contact Bill Forseth at the address above for authorization. This
  authorization will be automatically granted to distributors recognized by
  the ASP as adhering to its guidelines for shareware distributors, and such
  distributors may begin offering BILLS v1.2 immediately (However Bill
  Forseth must still be advised so that the distributor can be kept
  up-to-date with the latest version of BILLS).

  You are encouraged to pass a copy of BILLS v1.2 along to your friends for
  evaluation.  Please encourage them to register their copy if they find
  that they can use it.  All registered users will receive a copy of the
  latest version of the BILLS system.
2
  2. What it Does
  ──────────────────────────────────────────────────────────────────────────
  BILLS is a program that tries to help you intelligently manage your bills.
  It does not make any decisions for you, does not give you schemes to
  choose from, does not require that you enter a myriad of confusing or
  irrelevant data. What BILLS does do is attempt to organize your
  information in a manner that helps you make decisions about who gets how
  much and when. Following are some of the things BILLS does to facilitate
  this:

  o  Records are kept for each account, including account name and number,
     balance owed, amount of payments, payment date of the month, number of
     payments to be made per year, personal code (for tracking), 13 lines of
     notes that can be used for anything, date the record was created,
     amount and date of the last payment made on the account, and a list of
     transactions.

  o  Each transaction may be entered as a credit or debit, with an
     associated date. Transactions are viewed with credits and debits side
     by side in separate scrolling windows.
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  Records may be added, viewed, edited, deleted, and purged. Viewing can
     be done sequentially (forwards and backwards) or searched for easily by
     using the first non-blank character of a name. Purging a record makes
     it invisible from viewing in the normal view operation, but it still
     exists (useful for 0-balance or put-on-hold accounts). Purged records
     show up in searches (but not sorts).

  o  A calculator and scratch pad are available from most points of the
     program. This allows one to calculate and remember a scheme for paying
     a number of bills without having to use scratch paper or trying to
     remember a lot of numbers. The calculator operates like a hand
     calculator, the scratch pad gives a running total of all your figures.
     A scratch pad is associated with each data file, may be printed out,
     and is automatically saved and recalled from run to run.
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  The editor used for all entries is a multi-feature line editor,
     created to be as friendly as any. The size of the cursor indicates if
     it is in insert or overwrite mode, in most cases the length of the
     input string is denoted by reverse video, and normal editing functions
     (destructive backspace, inserting, overwriting, deleting, etc.) are
     available.

  o  All operations are accessible from menus using scroll bars or keying in
     a number or letter. The lower line (the stat line) lists what
     particular keys do what for each screen requiring some kind of input.
     If more information is needed for an operation, the data is prompted
     for and entered on the stat line. If errors occur they, too, are
     announced on the stat line.

  o  Help on all topics is easily accessible from within the program (by
     pressing 'h' in the Utilities Menu). A reminder of editing and global
     functions is instantly accessible from any menu by pressing '?'.
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  Different data files may be used during the same run, with scratch pad
     information associated with each data file. All data may be optionally
     backed up or written to a different file. It is impossible to quit the
     program without being given the option to save all modified or created
     data.

  o  Data may be searched for by name (all or part), balance (less than or
     greater than a specified limit), personal code (which may be assigned
     by the user), modified (only records that have been modified during the
     current session show up), by bills that are past due, and by payments
     made within a specified time range.

  o  Data may be temporarily sorted by name, by amount of monthly payments,
     by balance owed, by total paid, by total billed, by date the record was
     created, by amounts paid in the current month, by amounts paid in the
     current year, by personal code, by account number, and by the last
     payment made.
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  The results of all searches and sorts are put into a window. From there
     each found record may be viewed or edited, and its transaction list
     may be viewed or added to.

  o  A summary of totals is available, listing, among other things, the
     total of credits and debits, and amounts paid in the current month and
     year. (This summary ignores data from purged records).

  o  Separate records may be printed out, information from a search or sort
     may be printed out. From the command line, BILLS can print out all
     records and pertinent information to either the screen or the printer.

  o  All information associated with a record can be saved to disk, of
     course. When a record is created it is immediately saved to disk
     without further input necessary. This safeguards against accidental
     data loss.
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  During record creation, duplication is flagged, but allowed if the user
     so chooses. Here, duplication is when a record has the same name or
     account number (or both) as another record.

  o  All help information (this file) may be viewed or printed out from
     either the installation program (BINST.EXE), or from BILLS itself.

  o  There is an instant return to the Main Menu from most points in the
     program by pressing ALT-M.

  o  A directory listing of all data files, their number of records, sizes,
     and dates of last modification can be used to load different data
     files. New data files may be created from within the program, or at
     startup time.

  o  Data files may be merged or split (albeit manually).
@
  2. What it Does - continued
  ──────────────────────────────────────────────────────────────────────────
  o  BILLS does not alter any existing files such as autoexec.bat or
     config.sys, does not need to be in the path or in a specific directory,
     and does not need to have environment variables set. NO RECONFIGURATION
     OF YOUR COMPUTER IS NECESSARY FOR BILLS TO RUN CORRECTLY.

  The assumption has been made in writing BILLS that the user need no
  extensive experience with computers. For this reason options have been
  clearly labeled, and where possible keyboarding mistakes have been
  anticipated. On the other hand, BILLS assumes the user wants to do what
  they've chosen to do. That is, if one wants to quit without saving any new
  data to a file, this is possible. Likewise, if one wants to disregard
  changes made to a record, or delete a record entirely this, too, is
  possible. (For these cases, however, one is prompted to verify their
  choice).
3
  3. Installing BILLS
  ──────────────────────────────────────────────────────────────────────────
  BILLS may be installed manually by copying three files to the directory of
  your choice: BILLS.EXE, BILLS.HLP, and BILLS.BDB (this last one is
  optional). The first file is the program itself, the second is the help
  file (containing what you see here), and the third is an example data base
  that may also be used as a starter for your primary data base.

  Included in this package is a program BINST.EXE that will install these
  files automatically for you. To use it simply enter 'BINST' and follow
  directions from there. I strongly suggest that you scan through the whole
  help file (which is accessible from BINST as well as BILLS) before getting
  started. Not that there's anything complex to master, but there are
  features and shortcuts available that can make life easier. There is also
  a readme file (README.EXE) that should be helpful in getting started, and
  a registration form BILLS.REG. This can be printed out from the command
  line using 'type bills.reg > prn'.
4.
  4. Getting Started
  ──────────────────────────────────────────────────────────────────────────
  To get started I suggest you gather all bills, checks and other things
  you'd normally need if you were going to sit down and really get
  organized. Then, start the program by entering BILLS. If a file exists in
  the current directory named BILLS.BDB, you'll see the stat line reflect
  this. Otherwise, the stat line will announce 'Creating new data file
  BILLS.BDB'. Next, choose the second option in the Main Menu (Add a
  record). You'll see a screen labeled with name, account number and other
  things.

  At first, for each account enter just the name and account number, then
  press F1, (which saves the current record and presents you with a screen
  to enter the next one). When finished with this phase, press ESC and
  you'll be back in the main menu. Now you can go back and fill in any
  transactions (credits, debits), payment information, dates, notes, codes,
  etc. This is done by choosing the first option in the Main Menu (View -
  Edit). Then, using the arrow keys, you can scroll through the records, and
  edit the currently displayed record by pressing F2. To enter transactions,
  press F10. These commands are listed at the bottom of the screen, so you
  needn't remember them here.
@
  4. Getting Started - continued
  ──────────────────────────────────────────────────────────────────────────
  In each operation (viewing, editing, or creating) a small reverse video
  window in the upper right hand corner notifies you of what operation
  you're performing (View, Edit, and New, respectively).

  When finished, you might want to get a printout of what you entered. This
  can be obtained by pressing 'u' then 'p' from the Main Menu. Then, using
  the printout verify that all the information you entered is correct (and
  make any necessary adjustments if not).

  The search and sort operations are also useful in verifying data that you
  recently entered. Searching operations are available from the Main Menu,
  and sorting operations are available from the Search Menu.
@
  4. Getting Started - continued
  ──────────────────────────────────────────────────────────────────────────
  Having done all this, you should now be pretty familiar with BILLS. It is
  not a difficult program to learn, and commands are easily remembered from
  run to run. The stat line reminds you of most available options in each
  screen. There are 5 "hot-keys" that are available from most points in the
  program. They are:

                  ALT-S    Save data to file (if modified)
                  ALT-P    send current data to Printer
                  ALT-C    use the Calculator
                  ALT-D    use the scratch paD
                  ALT-M    quick return to the Main menu

  In addition, from any menu pressing '?' will bring up a short help screen
  that reminds you of the above commands, plus a few others.

  Lastly, use the Save / backup option in the Utilities Menu ('u', followed
  by 's' from the Main Menu), to save all data and create a backup file. If
  you want to save the data in a file with another name, use the second
  option in Utilities (create a New file).
5
  5. Startup Options
  ──────────────────────────────────────────────────────────────────────────
  BILLS has options that, when used at startup, can change what it does. The
  syntax is (anything enclosed in "[]" is optional):

                       bills [options] [filename]

  Options:

  /s  - This puts file information to the screen in an easy to understand
        format. To have it go to a file, use:
                           bills /s > filename
        To use an optional data file (say utility.bdb) use:
                           bills /s utility.bdb > filename

  /p  - This does the same as above, but sends the output to your printer.

  /?  - This option causes BILLS to start out in the Help Menu.
@
  5. Startup Options - continued
  ──────────────────────────────────────────────────────────────────────────
  When no file is specified BILLS searches for a file called BILLS.BDB. If
  found, it loads information from it. If not found, BILLS assumes the user
  wants to create it. If a data file is specified (as in 'bills cars.bdb')
  the same scheme as above is used. If the file is found, data is loaded. If
  the file is not found, it is created.

  Using either the /s or /p option, if a file is not found, or is not a
  BILLS data file, a message is printed to the screen, and the program
  halts. If any other flag is used besides /s, /p, or /? the program
  announces an error has been made, and stops.

  The file extension .BDB used here and in other portions of this file does
  not mean that all data files BILLS operates on must have the .BDB
  extension. Any, or no, extension may be used for a data file.
6
  6. Help and the Help File
  ──────────────────────────────────────────────────────────────────────────
  BILLS.EXE, in addition to needing data files, also needs the file
  BILLS.HLP to display help information. If you've gotten this far, than you
  have it in the right place. (The help file has to be in the same directory
  as the program). If the program can't find the help file a message is
  displayed, and you are returned to the Main Menu.

  To start out in the Help Menu, enter: bills /?, or once you are in the
  Main Menu press 'u' followed by 'h'. From any menu pressing '?' will give
  you a summary of editor functions and keys, and "hotkeys" for saving data,
  printing, the calculator, and the scratch pad. Pressing ALT-P when viewing
  the Quick Help screen causes it to be printed.

  If you are short on disk space, make a printout of the help information
  (using option P from the Help Menu), then you can delete the help file
  (but be sure to copy it to a floppy before deleting it!). It is not
  essential for the running of the program. The quick help available from
  all menus (by pressing '?') will not be affected by this.
@
  6. Help and the Help File - continued
  ──────────────────────────────────────────────────────────────────────────
  If you have a problem that you can't resolve through the documentation,
  please contact me at one of the numbers listed in the first option of this
  file (collect calls not accepted - sorry). You may do this even if you are
  an unregistered user of BILLS (though I'll probably put in a plug for
  registration). This is not as altruistic as it sounds - the more problems
  and bugs I can resolve early on, the better the program will become. At
  this point I am mainly interested in improving the program to where it
  fits the needs of the largest possible group - hence feedback of ANY kind
  is welcome!
7
  7. How to Use the Menus
  ──────────────────────────────────────────────────────────────────────────
  There are 6 different menus (Main, Search, Sort, Sort-2, Utilities, and
  Help) each with different commands. The menus (except for Help) may be
  used to choose an option in three ways:

  1 - Line up the reverse video (scroll bar) and press enter,
  2 - Press the key of the first uppercase letter of the option,
  3 - Press the number to the left of the option.

  Note that when you use the scroll bar, additional information on that
  option is displayed in a window just below the menu. The HOME key will put
  you at the top of a menu, and the END key will put you at the bottom. The
  PgDn key works just like the down arrow, and the PgUp works like the up
  arrow. Pressing ESC will get you to the menu from where you came from, or
  if you're in the Main Menu, it will cause the program to quit. If you've
  created new data (by editing or adding records or transactions), if data
  has not been saved when you exit, you will be prompted to do so. Pressing
  ALT-S in almost any screen will save all data.
@
  7. How to Use the Menus - continued
  ──────────────────────────────────────────────────────────────────────────
  In each menu below the Main Menu, pressing ALT-M will return you to the
  Main Menu. This instant return is also available when viewing
  transactions, viewing records, viewing the results of searches and sorts,
  and from any help topic. This option is not available when records are
  being edited or created, or when transactions are being added.
8
  8. What's a Record?
  ──────────────────────────────────────────────────────────────────────────
  A record is a collection of information about an account, person, company,
  etc. Each record has the same types of information, as a phone book has
  everyone's name, address and phone number (but usually different
  specifics).

  BILLS keeps track of a record's name, account number, payment amounts,
  balance owed, personal code, monthly payment day, payments per year, 13
  lines of notes, and a large number of transactions (credits and debits).

  The balance field reflects how much is owed on a particular account. If a
  negative number appears, then they owe YOU money (if all other things are
  correct). This field cannot be edited directly, it reflects the sum of all
  the debits minus the sum of all the credits.

  Unlike a phone book (or many other programs that manipulate records),
  BILLS allow one to have more than one record with identical information.
  In most cases it is preferred that no two records be the same, but in
  some cases it might be desirable.
@
  8. What's a Record? - continued
  ──────────────────────────────────────────────────────────────────────────
  BILLS loads and stores information by records, in a somewhat different
  format than what you see on the screen. This makes manipulating the
  information easier and quicker. The file containing records should not be
  tampered with directly - to do so will in all probability either cause the
  file to be unreadable to BILLS, or to produce incorrect information. If
  you're one who likes to tinker with things go ahead and do so, but do it
  with a copy of your data - not your main data file itself, (note that
  dates are packed integers, and not easily edited). The format I've used
  (in this version, anyway) is straight ASCII, but future versions may use a
  compressed format.

  In this document 'record' and 'account' are interchangeable, and mean the
  same thing.
9
  9. Viewing and Editing Records
  ──────────────────────────────────────────────────────────────────────────
  Records may be browsed by choosing the first option (View - Edit) in the
  Main Menu, then using the left and right arrow keys, HOME, and END to see
  the next, previous, first and last record. Pressing the spacebar acts like
  pressing the right arrow. In addition, pressing any character will search
  out the next record who's name starts with that character.

  While viewing a record, it may be edited (by pressing F2), transactions
  may be viewed (by pressing F9), and transactions may be added (by pressing
  F10). The stat line at the bottom of the screen lists these options, plus
  a few others.

  Records can only be deleted or purged from the View - Edit option.
  Pressing F6 will delete a record (after your choice has been confirmed).
  F5 will purge a record (again, after confirmation), but the record will
  still exist. Purging is recommended over deleting because -

  ┌───────────────────────────────────────────────────────────────────────┐
  │ DELETING A RECORD MEANS IT NO LONGER EXISTS - IT CANNOT BE RECOVERED! │
  └───────────────────────────────────────────────────────────────────────┘
@
  9. Viewing and Editing Records - continued
  ──────────────────────────────────────────────────────────────────────────
  If a record has been modified (by creating it, editing, adding
  transactions, purging or unpurging), a '*' character is printed after its
  name, (this character does not become part of a record's name). If the
  data is saved (by pressing ALT-S, or using the save options in the
  Utilities Menu), the '*' is still displayed. This is useful in determining
  which accounts you have worked on in the current session.
0
  0. Adding New Records
  ──────────────────────────────────────────────────────────────────────────
  This is probably the first thing you'll want to tackle. Following is a
  step-by-step list of what to do:

  1 - From the command line, enter 'bills' (this will make the data file be
      BILLS.BDB), or 'bills filename' (where filename can be any legal DOS
      file name).

  2 - When the Main Menu appears, choose the second option (Add a record),
      or press the INSERT key. You'll then be given a template, a blank
      slate, in which to enter information.

  3 - Enter the name of the account (for example, 'Fred's Auto Repair'). The
      reverse video line limits the number of characters you can enter - but
      there should be enough room for all fields. (See Editing Options for
      more about using the editor). There is no way to directly enter a
      balance - that must be done by adding transactions (see #6 below).
@
  0. Adding New Records - continued
  ──────────────────────────────────────────────────────────────────────────
  4 - Use the down arrow, TAB, or ENTER to place the cursor on the next line
      and enter the account number (if any).

  5 - To enter notes use the PgDn key to place the cursor in the note
      portion, enter any information you choose, and use PgUp or ESC to
      return to the data fields.

  6 - To add transactions first press F10. Enter an amount, then press ENTER
      or TAB, then enter a date. If you want the transaction recorded as
      being entered on today's date, leave the date field blank and the
      current date will be used. To debit a transaction (denoting an amount
      that is owed), press F4. To credit an amount (denoting a payment),
      press F3. You'll see a prompt listing what the program thinks you
      want. To verify this, press 'y'. To return to editing that transaction
      before it is entered, press 'n'. When finished with all transactions,
      press ESC.
@
  0. Adding New Records - continued
  ──────────────────────────────────────────────────────────────────────────
  7 - Use F1 to save the record (to make it permanent). The record will be
      saved to disk, and you will next see another blank record. To return
      to the Main Menu press ESC. If you press ESC without saving a record,
      you will be asked if you really wish to discard changes made (to that
      record only - previously created records will not be affected). Press
      'y' to disregard the current record, 'n' to return to editing it.

  8 - Choose the first option in the Main Menu (View - Edit). You will now
      see the records that you created. Pressing F2 will allow you to edit
      the record you see on the screen - just follow the directions on the
      stat line.

  9 - When you are finished with your session press ALT-S to save everything
      you entered. The name of the file that data will be saved to is listed
      on the stat line in the Main Menu.
@
  0. Adding New Records - continued
  ──────────────────────────────────────────────────────────────────────────
  Each record must have either a name or an account number. If you attempt
  to save a record without either of these, you will be notified that these
  fields are blank, and then returned to editing that record again. If a
  record exists with the same name or account number, you will be asked to
  confirm the save. Here, if you press 'n', you'll be returned to editing
  that record, and if you press 'y', the record will be saved. (Duplicate
  names and account numbers are allowed).

  Records are inserted in a telephone-book like sort, with neither leading
  blanks nor case being significant. That is, " bird " and "Bird" would be
  treated as the same, and "AA" would come before "AAA". If the names are
  the same, the account number is used for comparison. If two records have
  the same name and the same account number, the newer is inserted after the
  older.
a
  A. Adding Transactions
  ──────────────────────────────────────────────────────────────────────────
  A transaction is a credit or debit to the balance of a record. For
  instance, with a balance of $100, a credit of $10 would reduce the balance
  to $90, while a debit of $25 would increase the balance to $125. A balance
  is how much you owe on a specific account.

  While viewing, editing, or adding a record, pressing F10 allows you to add
  a new transaction, either credit or debit. When the transaction window
  appears, type in the amount, press ENTER, TAB or either up-down arrow key,
  then enter the date. The date should be in the form mm*dd*yy, where * is
  any character that is not a number. To go back to editing the amount from
  editing the date, again press either ENTER, TAB or an up-down arrow key.

  If the date is incorrect (like 23.99.00), or the number contains
  non-numerical characters (as in 25.mm) an error will be noted and you will
  be returned to editing. Examples of correct dates are 12.3.93, 1.1.94,
  etc. Examples of correct amounts are 100, 100.10, .90, etc. A credit or
  debit of zero is allowed.
@
  A. Adding Transactions - continued
  ──────────────────────────────────────────────────────────────────────────
  When finished entering the amount and date, press F3 to credit, F4 to
  debit, or ESC to abort. If F3 or F4 is pressed, you'll be asked to confirm
  by pressing 'y' or 'n'. If no date is entered, the current date is used.
  If no amount is entered and the type of transaction is a credit, the
  amount in the "Payments" field of the record is used. Pressing 'y' causes
  that amount to become part of the record. Pressing 'n' returns you to
  editing the transaction. Pressing ESC returns you to where you were before
  you began adding transactions. Once back, if a transaction has been added,
  the balance field of the record is updated accordingly and the record is
  noted as having been modified.

  While viewing, editing, or adding a record pressing F9 will allow you to
  see all transactions made to that record (you can use arrow keys, page
  keys, home, or end for scrolling the current active window). To switch
  windows (from credits to debits, or back again) press ENTER or TAB, or use
  the left and right arrow keys. The current active window is denoted by
  either Credit or Debit being in reverse video. By using the scrolling on
  each window, credits and debits may be aligned to a specific date period
  for viewing.
@
  A. Adding Transactions - continued
  ──────────────────────────────────────────────────────────────────────────
  When viewing transactions, if a transaction was recorded in the current
  session a '*' character is displayed after the date.

  Because transactions cannot be directly edited (only created), you'll need
  to make adjustments if a mistake is made. For instance, if you credited
  the account by $10.00, but really meant to debit, you'll need to debit it
  by $20.00 to bring it up to date.
b
  B. Purging and Unpurging Records
  ──────────────────────────────────────────────────────────────────────────
         ┌──────────────────────────────────────────────────────────┐
         │ DELETING A RECORD, AND THEN SAVING TO FILE, MAKES IT     │
         │ DISAPPEAR FROM THE FILE FOREVER. IT CANNOT BE RECOVERED. │
         │ PURGING A RECORD MAKES IT INVISIBLE, BUT IT IS STILL     │
         │ THERE. PURGING IS HIGHLY RECOMMENDED OVER DELETING!      │
         └──────────────────────────────────────────────────────────┘

  Purging is useful if you have reached a $0 balance in a bill, but would
  like to keep it around just in case. It also lets you hide bills you'd
  rather not see (which may not be a good thing to do).

  A record may be unpurged (made visible again) by selecting the Unpurge
  option in the Utilities Menu. There you will be given a list of all purged
  records. From there you may unpurge any or all purged records, or view any
  purged record. Once a record is unpurged it is back to normal, and you may
  then operate on it normally. A record may be purged and unpurged as many
  times as you want. The stat line in the Main Menu shows how many records
  there are overall, and how many purged records are in the list.
@
  B. Purging and Unpurging Records - continued
  ──────────────────────────────────────────────────────────────────────────
  On the practical side, purging is useful for keeping track of old bills.
  Just like you should keep old checks and receipts, keeping old records
  makes them available just in case.

  Purging a record does not affect searching operations. For this purged
  records are noted on the screen (by a '~' character preceding the name),
  and may be viewed (but not edited) from there. The only way to edit or
  delete a purged record is by first unpurging it, then using the View -
  Edit option to delete or edit, or the search and sort options to edit.
c
  C. Printing Data
  ──────────────────────────────────────────────────────────────────────────
  Data can be printed 1 of 3 ways. First, by using the /p switch from the
  command line (see Startup Options). Secondly, by choosing the "send data
  to Printer" option in the Utilities Menu. These two methods produce
  exactly the same results. The third way is by pressing ALT-P while viewing
  a record in the View - Edit option, viewing transactions, viewing the
  results of a search or sort operation, or while using the scratch pad. You
  might want to experiment with all methods to find one that best suits your
  needs. I've tried to mix and match information in different formats so at
  least one method will be best for you. Notes never get printed, (but
  purged records do).

  For printing the scratch pad, and results of searches and sorts, what you
  see is what you get. Printing a single record lists all field information,
  all transactions, and totals.
@
  C. Printing Data - continued
  ──────────────────────────────────────────────────────────────────────────
  The printing that BILLS does is not fancy, even crude by some standards.
  The information is there, though, and that's the important part. The
  printing option should work for all printers, hooked up to any port.
d
  D. Data Files
  ──────────────────────────────────────────────────────────────────────────
  The records that BILLS operates on are stored in data files. When the
  program starts up all records are copied into the computer's memory to be
  operated on. As in all things, there's a trade. The time to load the data
  from a disk into memory (slow) must be balanced with the time to access
  that information in memory (very fast). The route here is to load
  everything into memory, so that once it's there things go very quickly.

  Some programs load a portion of a file, then if a record is called for
  that is not in that portion, the file must be accessed again. There are
  sophisticated schemes that allow an unlimited number of records, usually
  at the cost of extra files, that attempt to minimize the number of file
  accesses for large data bases.

  For now BILLS bypasses this by making the assumption that one will not
  need more than, say, a hundred or so records (with many transactions,
  adding up to around 125,000 bytes). I don't think that this is restrictive
  in that few people have more bills than this. If you do you may need an
  accountant - not this program.
@
  D. Data Files - continued
  ──────────────────────────────────────────────────────────────────────────
  As a way around the size restriction, one can use more than one data file.
  Records can then be categorized (say as short term and long term bills, or
  alphabetically as in A-M.BDB and N-Z.BDB), and different files can be
  loaded from the Main Menu. Alternatively (and if one wants to use BILLS
  for a long period of time, old bills may indeed exceed 100), a suggestion
  is to use data files by year, as in 1993.BDB, 1994.BDB, etc.

  Note that once a new file has been loaded, the information from the older
  file disappears from memory (but not from the file, of course). If records
  in the older file were added or modified, before the new file is loaded
  the user is prompted to save the data in the older file.
e
  E. The Default Data File
  ──────────────────────────────────────────────────────────────────────────
  By default (that is, if given no other command) BILLS uses a file called
  BILLS.BDB to hold all the records. When you enter 'bills', the program
  looks for that file, and if it finds it all the information from that file
  is put into the computer's memory, to be operated on. If BILLS.BDB is not
  found, it is assumed that the user wants to create it. The main purpose of
  this operation is to allow a user to use the program without explicitly
  creating new data files. At first this may be adequate, but as time goes
  on you might want to load different data files. BILLS allows for this. See
  the next section New Data Files.
f
  F. New Data Files
  ──────────────────────────────────────────────────────────────────────────
  To create a new data file, you can name the new file on the command line.
  For example, to create the data file 'marys.dbt' you'd enter:
                          bills marys.dbt
  Even though the file does not exist at that moment, BILLS will create it
  and save all records that are created to that file. For that new file the
  stat line would announce "Creating new data file marys.dbt." To access
  this file once it has been created (ie: accounts have been added), again
  you'd enter:
                          bills marys.dbt
  This time, because the file exists, information will be loaded.

  Alternatively, you can use option 3 (Load a new datafile) in the Main
  Menu, naming a file that doesn't already exist. Again, all new records and
  transactions will be put into that file, and can be recalled by naming
  that file on the command line or again using option 3 in the Main Menu.
@
  F. New Data Files - continued
  ──────────────────────────────────────────────────────────────────────────
  If you attempt to load a data file that BILLS does not recognize, you'll
  see the message "____ is not a data file". What this means is that BILLS
  attempted to read records from a file that has a format it doesn't
  understand. In this case you must retry - load either a BILLS data file,
  or name a file that doesn't already exist.  Note that no harm comes to a
  file that is not in BILLS format when you attempt to load it.

  To view all files in the current directory that are BILLS-type data files,
  press ENTER (without typing in a name) while using option 3 of the Main
  Menu. You'll be shown a directory of the found files. From there any one
  of these files may be loaded by lining it up with the top of the screen
  and pressing ENTER (the name is also displayed on the stat line). To
  return without loading a different file just press ESC. In this version of
  BILLS only the current directory may be displayed.
g
  G. More About Data Files
  ──────────────────────────────────────────────────────────────────────────
  The data file itself holds the data for all the information that the
  program displays, plus some characters that are special to the program
  (where one record ends and another begins, for instance). A skilled user
  could probably edit a data file directly, but I wouldn't recommend it
  unless you really know what you're doing. (And, there is no guarantee that
  future versions of BILLS will use the same scheme for data files - if this
  happens, a small program to convert old files will be included with new
  releases).

  BILLS cannot operate on data files it didn't create. With the number of
  different programs that create their own data files, it is impossible to
  make a program general enough to recognize and operate on any and all
  formats. Obviously. Likewise, I doubt very much that you will find another
  program that will operate on data files that BILLS creates.
@
  G. More About Data Files - continued
  ──────────────────────────────────────────────────────────────────────────
  Speaking of backups, it is a very good policy to copy your data files to a
  floppy disk every time you pay bills. Then, every month copy the files to
  a separate floppy disk, and put that disk somewhere safe. If you are
  relying on the data for an accurate record of your bill paying history for
  tax purposes, or for anything else important you need to be aware of:

              * Murphy's Law, for Computers and Programs in General *
  Whatever can go wrong eventually will.

              * Murphy's First Law of Real Important Data *
  The more important the data, the higher the probability that something
  will go wrong. This probability is increased by the number of backups that
  don't exist.

              * Murphy's Second Law of Real Important Data *
  If you have a sufficient number of backups, nothing bad will happen. As
  you decrease this number, strange occurrences will follow. As the number
  of backups approaches zero, the probability of catastrophe approaches 1.
h
  H. The Stat Line
  ──────────────────────────────────────────────────────────────────────────
  The stat line is the lower line in reverse video that is seen in most
  screens. It contains different types of information, and in some cases is
  used to enter data. In most cases the stat line only displays information
  that is specific to that screen. More general options, such as ALT-S for
  save, are not listed (due to space limitations).

  In the Main Menu the stat line lists the name of the data file you're
  using, the number of records that is has, and if the data in memory has
  been altered - if so the Save? message will be "Yes", otherwise "No". For
  other screens (such as editing or adding records), it lists keys that are
  to be used for saving a record to file (F1), adding a transaction (F10),
  and so on.

  This is also where you'll find messages such as "Are you sure? (y/n)" and
  others that prompt for a reply, the name of a new file to operate on, etc.
@
  H. The Stat Line - continued
  ──────────────────────────────────────────────────────────────────────────
  Be sure to read each stat line. In a very few cases the same key means
  different things in different screens. In no case can data be erased or
  work undone with a single keystroke, although without reading the stat
  line you may inadvertently do something you had not wanted to.
i.
  I. Personal Codes
  ──────────────────────────────────────────────────────────────────────────
  Using personal codes is a method of categorizing your bills in a way that
  makes sense (maybe only) to you. The code is entered when a record is
  created or edited, in the "Code" field. For instance, CC can be used for
  credit cards, SL for student loans. Or, one may categorize by order of
  importance: 1 for house and car payments, 2 for utilities, 99 for the tape
  club.

  Using the Search Menu, you can see all records that fit into a particular
  category. It is not necessary that all (or any) records have a personal
  code. If you plan to use them extensively, though, it may be useful to
  create a record who's note fields contain the codes and what they stand
  for.
j
  J. Using the Calculator
  ──────────────────────────────────────────────────────────────────────────
  Pressing ALT-C at almost any point will bring up a simple calculator. It
  performs addition, subtraction, multiplication, and division much like a
  standard pocket calculator.

  The calculator consists of two parts, an upper window (for displaying
  memory variables), and the bottom part, where the calculations are
  entered. As you enter numbers, you'll see them appear in the lower window.
  Pressing a dot ('.') automatically places you in the cents part of the
  number. Up to 2 more numbers can then be added for cents.

  Entering a number, pressing '+', entering a second number, and pressing
  '=' or ENTER, adds the two numbers, placing the result in the calculator
  window. The currently displayed number then becomes the first number. To
  add a number to that enter '+', another number, and again, ENTER or '='.
  Same operation for '-','/', and '*'. To clear the calculator window at any
  time just press 'c'.
@
  J. Using the Calculator - continued
  ──────────────────────────────────────────────────────────────────────────
  The top window, the one with 1=,2=,3=, etc. is the memory window, and
  shows the values of 8 different memory variables. Don't let this scare
  you. Say you calculate the amount of payments needed to pay off your car,
  and would like to save this while you figured out something else. By
  pressing F1 the number in the little window will be placed after "1=", and
  then you can press 'c' to clear the little window to start a new
  calculation.

  Later on, if you want to use the car payment amount press ALT-F1 and it
  will be placed in the little window. To clear a single memory location
  (say F1) make sure the little window has "0.00" in it, and press F1. This
  operation works the same for the first 8 function keys, F1 through F8, and
  ALT-F1 through ALT-F8.

  To clear all 8 memory variables and the calculator window press 'C'
  (capitol C). If there is data in the calculator's memory, you'll be asked
  if you really want to zero it out.
@
  J. Using the Calculator - continued
  ──────────────────────────────────────────────────────────────────────────
  The 8 memory variables keep the same values for as long as you're using
  the program, so if you want to save something, then add another record,
  then make another calculation you'll see that the memory hasn't changed
  from the last time you used it. The small window, though, starts out fresh
  each time you use the calculator.

  The Calculator can be called from the Scratch Pad - but not visa-versa.
  This could lead to a really nasty problem that sometimes crashes
  computers.
k
  K. Scratch Pad
  ──────────────────────────────────────────────────────────────────────────
  The scratch pad is a utility that allows one to figure out just who gets
  how much from what you got. It is accessible by pressing ALT-D from most
  screens. There is room for 20 different entries, with an amount and note
  per each entry. The total of the amounts is instantly updated and
  displayed each time an amount is entered. There is a scratch pad
  associated with each data file. All information in the scratch pad stays
  the same from the last time you used it, even if you quit the program. It
  is a handy thing to get used to using.

  For instance, you start out saying: "I'll pay $50 to X, and $80 to Y."
  This leaves you with only $20 left, but Z is demanding $40. So, you adjust
  and then say: "Well, I'll pay $40 to X, $70 to Y, and $40 to Z." Great.
  But now, you see you have a check for $65 that you'd forgotten about, and
  you just got a bill from W wanting $85, but if you wait a week you'll get
  another $140 from your third job, but by then the telephone bill will be
  past due - and on and on.
@
  K. Scratch Pad - continued
  ──────────────────────────────────────────────────────────────────────────
  Using the scratch pad allows you to make adjustments on the fly, and most
  importantly, you get to see an absolutely accurate total at the bottom
  each time you enter a number.

  You can have the scratch pad information printed out (by pressing ALT-P)
  to keep a permanent record. This is helpful for keeping a hardcopy record
  of what was paid, what is still owed, etc.

  The information in the scratch pad is automatically saved when you quit
  the program (or load another data file), and uses a small file with the
  same name as the current data file, with the extension SPD.

  Some editing operations are unique to the scratch pad (see next page).
@
  K. Scratch Pad - continued
  ──────────────────────────────────────────────────────────────────────────
  The keys used for the scratch pad are:

  ESC        - Return from where you came from (all data in the scratch pad
               is saved).
  TAB, ENTER - If you have just entered an amount, pressing these keys will
               put you in the note field. If you are already in a note
               field, pressing one of these keys will put you in the next
               amount field.
  Up, Down   - Pressing one of these arrow keys allows you to move from one
               field to the next or previous field (notes or amounts).

  All other keys (letters, numbers, caps, insert, etc) behave normally. (see
  General Editing Options).
l
  L. General Editing Options
  ──────────────────────────────────────────────────────────────────────────
  The editor BILLS uses for input was written to behave in a familiar manner
  to all who have ever used a word processor, the main difference being that
  the BILLS editor operates on lines. What this means is that only so many
  characters are allotted per line, and when you get to the end of a line it
  won't wrap to the next line. If a character is inserted into a line, and
  the string length exceeds the line length (as denoted by the length of the
  reverse video line), the last character in the line is lost.

  Following are specific features used for all editing:

  ALT-1             Lowercase the current letter
  ALT-2             Uppercase the current letter
  Up/Dn Arrows      Move up/down a line
  CTRL-Right Arrow  Move right one word
  CTRL-Left Arrow   Move left one word
  CTRL-E            Erase to the end of the line
  CTRL-L            Erase the entire line
@
  L. General Editing Options - continued
  ──────────────────────────────────────────────────────────────────────────
  These features are used when editing notes only:

  CTRL-D            Delete the line (moving lower lines up). The deleted
                      line is placed into the buffer (see CTRL-B option),
                      and may be recovered using the CTRL-P option.
  CTRL-S            Insert a blank line at the current cursor position.
                      Because this causes the last line to disappear, the
                      last line in the notes must be blank.
  CTRL-B            Place the current line into a buffer.
  CTRL-P            Put the buffer into the notes at the current line. This
                      operation will not overwrite the current line if it
                      contains data, so the current line must be blank.
  CTRL-T            Place today's date at the start of the current line.

  The buffer used in the CTRL-D, CTRL-B and CTRL-P operations is a static
  buffer - it stays the same from record to record. It is a 1-line buffer
  that is overwritten with each use of the CTRL-B and CTRL-D options.
@
  L. General Editing Options - continued
  ──────────────────────────────────────────────────────────────────────────
  Normal editing functions like Caps-Lock, Num-Lock, backspace, DEL, INS,
  HOME, END, left and right arrows all behave as you'd expect. Pressing '?'
  from any menu will bring up a short help display listing what the previous
  pages did in regards to key usages.
m
  M. Closing Window
  ──────────────────────────────────────────────────────────────────────────
  When the program quits you'll see a summary of what was done - how many
  records were added, edited, deleted, purged; the number of transactions
  that were added, and to what data file. This pertains only to the most
  recently used data file. View this with a grain of salt if you've added or
  edited records, but changed your mind and didn't save them.
n
  N. Searching
  ──────────────────────────────────────────────────────────────────────────
  Additional information is displayed for each record in the search and sort
  results. I've tried to mix this up so at least one format will be most
  helpful. At least one of the two main areas of concern - balance and last
  payment - are displayed in most results. The screen display can be
  scrolled by using the arrow, HOME, and END keys. Pressing ESC returns you
  to where you started from, pressing ALT-M returns you to the Main Menu,
  and pressing ALT-P sends the results to the printer (WYSIWYG). Purged
  records show up in searches, (but not sorts).

  To view a record that is shown on the screen, enter ALT-V and then the
  record's corresponding number (the number to the left of it in the
  display) or press ENTER to view the record who's name is listed just above
  the stat line. The same method is used to edit a record, first pressing
  ALT-E (purged records can be viewed only). If a record is edited, the
  display will be updated when you return to it. If, when viewing a record,
  you would like to return directly to the Main Menu just press ALT-M.
@
  N. Searching - continued
  ──────────────────────────────────────────────────────────────────────────
  BILLS can search for records in 6 different ways: by name, by balance, by
  code, by bills past due, by records that were modified during the current
  session, and by payments made in a specified time range. Some searches
  prompt you for additional information.

  Search by Name: Entering nothing (or '*') will list all the names of all
  records. Entering a string will cause bills to see if the name (or if
  there is no name, the account number) contains the search string. For
  example, entering 'bit' would produce a hit on "Bit Computers" and "John's
  Rabbits", but not on "Rabbi Tom". This is a quick check of accounts'
  balances and last payment dates.

  Search by Balance: A range (greater or less than some limit) is prompted
  for. To list of all balances greater than $1,000 you'd enter "> 1000". To
  see a list of all balances less that $150 you'd enter "< 150". If you
  enter nothing, or just ">", a greater than $0 balance search is assumed.
  To see all records with a zero balance, for example, you'd enter "< 1".
@
  N. Searching - continued
  ──────────────────────────────────────────────────────────────────────────
  Search by Code: This searches all records to see if the personal code
  matches the string that is prompted for. This is an exact search, but not
  case sensitive. Entering nothing brings up a list of all records with no
  personal code.

  Search by Past Due: If a record has a due date (Pmt Day field) and a
  payments field, a positive balance, and no payment has been made in a
  certain time span then the record is included in this list. The time span
  is calculated by dividing 365.25 by the number in the Pmts/Yr field, or 30
  days if no number appears there. Note that this is not proof positive that
  a bill is past due - for instance, if you'd made a double payment 40 days
  ago, this would be flagged as a past due account.

  Search by Modified: This lists all records that have been modified (by
  either creating, editing, or adding transactions) since the program was
  started up. This can be used as a quick check to see that all payments /
  bills were entered in a session.
@
  N. Searching - continued
  ──────────────────────────────────────────────────────────────────────────
  Search by Time Range: This searches all records for payments falling in a
  specified time span. Here you are prompted for two dates, a starting date
  and an ending date. Again, the dates should be entered in the form
  mm*dd*yy, where * is any non-numerical character. Entering nothing for the
  first date (starting date) will cause that date to be the earliest payment
  made for any record of all the records in the data base. Entering nothing
  for the second date (ending date) makes that become the current date. The
  numbers displayed are the total of all payments made on each account
  within the specified time period. This is an inclusive search, meaning
  that payments made on either date will be included in the report.

  The results of all searches are sorted alphabetically by name. A '~'
  character preceding the name means the record is purged.
o
  O. Sorting
  ──────────────────────────────────────────────────────────────────────────
  The sorting option displays a sort of all records by a specified category.
  This has no effect on the records themselves - it is a temporary display.
  Purged records do NOT show up in sorts.

  Sort by Name: This sorts all records by name, placing the total amount
  paid on each account in the current month at the right. The "T:" at the
  bottom shows the total of all amounts paid this month.

  Sort by Monthly Payments: This lists each monthly payment (this is the
  "Payments" field from a record). The total at the bottom reflects the
  totals of these amounts. (This is not a list of anything that was actually
  paid). If everything is in order (all payment fields reflect the amount
  you are expected to pay when each bill is due) and the total is more than
  your income (a very common thing), it may be a clue to re-budget.

  Sort by Balance: This sorts all records by the amount you owe. The total
  is the total of all balances. Sorted by descending balances, the higher up
  the list a record is, the more you owe that account.
@
  O. Sorting - continued
  ──────────────────────────────────────────────────────────────────────────
  Sort by Total of Credits Paid: This is the total of all payments made to
  each account. This is useful if you are trying to figure out a more
  realistic budget. For instance, if you pay more on your account at "The
  Kandy Korner" than you do on your credit cards you may want to re-think
  your outflow.

  Sort by Total of Debits: This is the total of all debits made to each
  account, NOT adjusted for any payments. Don't have an anxiety attack when
  viewing the total, unless this number is about the same as the total of
  all balances.

  Sort by Create Date: This sorts accounts by the date the record was
  created, youngest first. The numbers at the right are the balances owed on
  each account, the number at the bottom the total of all balances. This is
  useful for finding out exactly how long you've been paying on things like
  credit cards - if you started out with a balance of $1000, cut the card
  up, made minimal payments, and after 5 years still owe $900 you might want
  to avoid that company in the future.
@
  O. Sorting - continued
  ──────────────────────────────────────────────────────────────────────────
  Sort by Last Payment: This sorts all records by the date of the last
  payment made, the numbers on the right showing what that payment was, and
  the number at the bottom the total of those payments. This is a useful
  display for finding out exactly when it was that the last payment was made
  to an account. It comes in handy for avoiding embarrassing arguments with
  creditors about such details.

  Sort by Amount Paid Month-to-Date: This sorts all records by the total of
  amounts paid to each account in the current month. The total reflects the
  sum of these figures.

  Sort by Amount Paid Year-to-Date: This sorts all records by the total of
  amounts paid to each account in the current year. Again, the total
  reflects the sum of these figures.

  Sort by Code: This sorts all records by pre-assigned code. If a record has
  no code, it is listed with blanks in the code column. The numbers reflect
  balances, the total the sum of all balances.
@
  O. Sorting - continued
  ──────────────────────────────────────────────────────────────────────────
  Sort by Account Number. This sorts all records by account number (the
  field is blank if there isn't one for a given record). It is a fact that
  some account numbers are incredibly long, so for display purposes only the
  first 30 or so characters are shown. The name of each account is to the
  right of each account number, and only the first 20 or so characters of it
  are displayed. The view/edit name in the lower left corner gives the full
  name of the account.

  With sorts, if the ALT-E option is used (edit a specified record), upon
  returning the display is automatically updated.
q
  Q. Saving Data
  ──────────────────────────────────────────────────────────────────────────
  BILLS uses the following schemes in saving record data to a file:

  If ALT-S is pressed (in any menu, or while viewing a record), and data has
  been modified but not yet saved, all records are written to the file
  specified on the stat line in the Main Menu.

  If F1 is pressed while creating a record, that record is appended to the
  specified data file. This is much quicker, and a safeguard against
  accidental data loss.

  In the Utilities Menu, choosing the first option (Save / backup data)
  causes all data to be written to the current file, then to a backup file.
  The backup file name is the same as the current data file, except it has
  the extension BDK. For this option, data does not have to have been
  modified for the operation to work. No checking is done to see if files
  are being overwritten here!
@
  Q. Saving Data - continued
  ──────────────────────────────────────────────────────────────────────────
  In the Utilities Menu, choosing the second option (save to New file) will
  first cause BILLS to ask for the name of a file to write to, then have
  data written to that file. (This, too, is an automatic save - no data need
  have been modified for this operation to work). When specifying a file
  name, if it already exists BILLS will ask for permission before
  overwriting it. If it cannot be created (illegal filename, directory
  specified that doesn't exist, drive door not closed, etc.) BILLS asks if
  you'd like to name a different file to write to. Pressing n, N, or ESC
  here will cause the operation to abort, and no data will be written.

  For all writes except the F1 save in creating a record, the stat line
  displays what file is being written to and how many records are being
  written. For large data files, the write time can be a few seconds or
  more, hence the display - to let you know that it's working.

@
  Q. Saving Data - continued
  ──────────────────────────────────────────────────────────────────────────
  The stat line in the Main Menu informs you if you need to save data. If
  the word following Save? is "Yes", then you do. If it is "No", then you
  don't. If a record has been modified at some point, a '*' character
  appears after its name. The '*' stays even if data is saved during the
  course of a session.

  This is a good place to explain the difference between saving data to a
  file, and saving data to the "list". When you edit a record and press F1,
  or add a transaction and press 'y' when prompted, that data is saved to
  the list - that is, it becomes part of the record, but in memory, not on
  disk. At this point, if your computer goes down or gets re-booted, the
  data that has been modified cannot be recovered. Data that is in memory
  becomes inaccessible once the computer has been turned off.
@
  Q. Saving Data - continued
  ──────────────────────────────────────────────────────────────────────────
  On the other hand, data that is saved to a disk file can be recalled any
  number of times, can be altered and then rewritten to the disk, and can be
  transported from computer to computer (if the computers themselves are
  compatible). So, why isn't everything done on a disk? Disks are very slow
  - typically, the slowest thing on a computer. Memory, on the other hand,
  is very fast.

  With BILLS, whenever a record is created, it is automatically stored on
  disk. When a record is edited or transactions added, however, it is saved
  to the list (or memory) only. This is a trade-off between safety and
  convenience, and is a commonly used method.
r
  R. (y/n) Permission
  ──────────────────────────────────────────────────────────────────────────
  For many operations, the stat line asks for permission by asking a
  question followed by (y/n). The program will not continue without some
  kind of input. Unless otherwise specified, pressing n, N, or ESC will
  cause the operation to not happen, pressing y, Y, or ENTER will cause the
  operation to happen. Pressing any other key has no effect.

  When ending the program, if no data has been modified or added, you are
  asked to press ESC again to quit. This is to safeguard against pressing
  ESC one too many times when returning from other menus, mysteriously
  ending up at the DOS prompt.

  If data has been modified, and the user wants to quit BILLS (from the Main
  Menu), pressing ESC returns you to the Main Menu. This is a safeguard
  against "stacking" presses to ESC - which would cause new or modified data
  to be lost. The only way to quit the program without saving data - if
  anything has been added or modified - is to press a lower case 'n'.
s
  S. ? - Quick Help
  ──────────────────────────────────────────────────────────────────────────
  Pressing '?' at most points in the program gives you a quick help display.
  This display is a reminder of what keys do what (for calling the
  calculator, scratch pad, editing, etc).

  To view it now, return to the Help Menu and press '?'.
t
  T. Merging / Splitting Data Files
  ──────────────────────────────────────────────────────────────────────────
  Data files may be merged (to join 2 or more data files), or split (making
  two smaller data files from one larger one). These are, for now, manual
  operations which must be done in part from the command line.

  Merging: To merge 2 or more data files, the following scheme may be used
  from the command line:
                      C> copy f1 + f2 + ... + fn newfile
                      C> bills newfile

  For example, to merge two data files named march.93 and april.93 into a
  new file (say, mar-ap.93), the following commands would be used:
                      C> copy march.93 + april.93 mar-ap.93.
                      C> bills mar-ap.93

  This is a DOS operation, which will work on all versions of DOS (and all
  DOS-like shells, such as 4DOS).
@
  T. Merging / Splitting Data Files
  ──────────────────────────────────────────────────────────────────────────
  To split a large data file into 2 smaller ones, the following scheme may
  be used. Say you want to break up a large data file (big.bdb) into 2
  smaller ones (say, a-m.bdb and n-z.bdb). From the command line you'd
  enter:
                          C> copy big.bdb a-m.bdb
                          C> copy big.bdb n-z.bdb

  Now, load the first small file (entering 'bills a-m.bdb') and delete all
  the records you will expect to find in the second file (logically, all
  records who's names begin with n-z), then save.

  The second small file (n-z.bdb), can be adjusted in a like manner
  (deleting all records who's names begin with a-m).

        ┌──────────────────────────────────────────────────────────┐
        │ IT IS A WISE THING TO OPERATE ON COPIES OF YOUR DATA     │
        │ FILES ONLY, AND NEVER ON THE ONLY COPY YOU HAVE OF THEM. │
        └──────────────────────────────────────────────────────────┘
u
  U. Limits
  ──────────────────────────────────────────────────────────────────────────
  A big question from the point of view of programmers and experienced users
  is limits on size and speed. Because BILLS does all its work in memory it
  is very fast. The code was written with this in mind, and in most cases
  when a trade was to be made against size verses speed, speed won out. Bill
  paying is usually a painful process, involving many decisions and not a
  little frustration. It need not be more time consuming than it has to be.

  Now here's the downside. The size of the data that BILLS operates on is
  limited by the memory of your computer. With 640K, I wouldn't try to use
  data files over, say, 125,000 bytes. The size of the data file is as much
  dependent on the total number of transactions as it is on the number of
  records. (In testing, BILLS accepted a 101 record, 5000 transaction,
  146,000 byte file, but that's really pushing it). To view the size of your
  data file, run the DOS command DIR noting the number of bytes it reports,
  or use the directory option associated with the "Load a new data file"
  option in the Main Menu.
@
  U. Limits  - continued
  ──────────────────────────────────────────────────────────────────────────
  Should the program have a problem with the size a data file, three
  different things can happen: One, if there is not enough memory to load
  all the records in a file, the program prints an error message and halts.
  Two, if the records can be loaded, but there are too many transactions,
  the last transaction to be viewed will say something to the effect that
  there are more, but they cannot be viewed. Three, if everything loads
  fine, but there is no more memory with which to either add records or use
  the calculator or scratch pad, an error message is printed and the program
  halts. This is a warning that the file needs to be split. (see
  Merging/Splitting Files).

  As far as limits on the numbers used, it would be nice if there were none,
  but for display purposes there has to be. So, the limit on the largest
  number that can be entered is six digits for dollars, with an additional
  three digits for the dot and cents part. If this is restrictive let me
  know - it can be easily adjusted. (An exception is the calculator, which
  gives one more digit for the dollar amount).
@
  U. Limits  - continued
  ──────────────────────────────────────────────────────────────────────────
  Many solutions and variations seem to exist for dollars and cents input,
  none of which (that I've seen) is perfect. The problem comes in when an
  amount is entered without the cents part (and the display string exceeds
  the allotted line length) or the amount exceeds the input string length.

  My solution is this: if no cents part has been entered, or only a one
  digit cents part has been added, when the cents part is automatically
  added to the display and the length of the input line is exceeded, the
  number is disallowed, and becomes 0. (This also applies to incorrect
  numbers, such as 10.10.45, etc). Disallowing seems better than truncating
  or shifting a number, which leaves an extremely inaccurate result. Zeroing
  is also more noticeable to the user. If you don't need to enter amounts of
  $1,000,000 or more, you'll never see this circumstance.
v
  V. Interesting Fact
  ──────────────────────────────────────────────────────────────────────────
  Now here's an interesting little fact: if you have 3 bills to pay, $100
  with which to pay them, and want to send each creditor anywhere from
  nothing to the full $100, (with all three payments totaling $100 - and in
  dollars only, not dollars and cents), there are 5,151 different ways to do
  this. If you have 4 bills and $100, then there are 176,851 different ways
  to do this. Five bills and $200? 70,058,751. $500 and 12 bills? About
  13,944,600,000,000,000,000,000. How about $1000 and 20 bills? Around
  992,864,865 - followed by 31 zeros. You can see that the possible ways of
  paying a number of bills given some amount of money can be a very large
  number, indeed. The equation looks like this:

  Let t(n,b) be the number of possible ways of paying b bills given n
  dollars, with the sum of all payments equal to n. Assume b,n > 0. Then,
                    t(n,b) = (n+b-1)! / ((b-1)! n!)
  For the recursively minded,
                    t(n,1) = 1   for all n > 0
                    t(1,b) = b   for all b > 0
                    t(n,b) = t(n-1,b) + t(n,b-1)  for all b,n > 1.
@
  V. Interesting Fact - continued
  ──────────────────────────────────────────────────────────────────────────
  So, why the hell did I spend an afternoon finding and verifying this
  formula when I should have been out looking for a real job? Well,
  somewhere along the line someone will say (and this someone may be a
  person with lots of money to invest): "Why don't you output different
  schemes for paying a number of bills with x amount of dollars? That would
  be a nice feature." Some feature - for large numbers a computer powerful
  enough to do this in your lifetime would probably generate enough heat to
  vaporize the known universe.

  This is also scientific proof of why paying bills ends up being such a
  mentally exhausting experience for those of us who don't have quite enough
  to go around and need to juggle things a little, or a lot.
w
  W. Versions
  ──────────────────────────────────────────────────────────────────────────
  BILLS has already been through a few changes in its short life. Following
  is a (mostly) non-technical summary of them:

  V1.0 - 1991. Initial version. Coded to see what would be necessary, and
         what was pipe-dreaming. Throw-away design. Got a feel for what I'd
         be taking on.

  V1.1 - 1992. Better design, long-term usage testing. Used for a year to
         discover annoyances, "wouldn't it be nice if it ..." things, "never
         used that feature ...", etc. Gave thorough workout to the editor
         and observed long-term behavior of accounts as the number of them
         and their transactions grew. Did away with address, zip code, etc.
         fields in the upper part of record adding and viewing - real space
         wasters (in my opinion). Also wanted to see if the 13-line
         restriction in the notes section of each record was acceptable,
         which in most cases it was (but in some it was not). Checked up on
         how well usage was remembered across downtimes, and if it actually
         was more useful than card files, overflowing notebooks, etc. Which
         it was, hence V1.2.
@
  W. Versions - continued
  ──────────────────────────────────────────────────────────────────────────
  V1.2 - 1993. Took what was learned from V1.1 and totally rewrote the
         program. The editor is much more robust, memory usage more
         predictable, files load faster; added calculator, scratch pad and
         search/sort routines. Added more safety features and error
         precautions; made program more orthagonol (same keys do same things
         in all phases of program - global features really available
         globally).

  Future - At this point BILLS suits my own personal needs quite well, (and
         has made bill paying a little less unpleasant, and more
         consistent), so I'm not out anything if no other interest is shown.
         In order for there to be future versions, though, two things are
         necessary: one, a general (if even sparse) interest is shown; two,
         a need for improvements, fixes, additions is seen. Numerous
         registrations alone do not necessitate upgrades - I still use
         programs that were written in the early 1980's, were never updated,
         and they still work fine. (But, on the realistic side, a program of
         this scope can ALWAYS be improved upon!)
@
  W. Versions - continued
  ──────────────────────────────────────────────────────────────────────────
  So, a few things that are possible for future versions are expanded note
  operations, better (or more) records and transactions, and color
  configurations. Also, I think I underestimated the convenience of the
  scratch pad operation - the next version should have more than 20 lines,
  possibly more than one column for amounts.
x
  X. Opening Time and Date
  ──────────────────────────────────────────────────────────────────────────
  Time and date information is displayed at the top of the screen in the
  Main Menu. The week number is the number of the current week. Note that,
  in this program anyway, the year starts out with week 1, day 1. Some
  banks, creditors, and others may have the year begin with week 0, day 1.
  There seems to be no clear cut convention for this that I could find.
  Here, the weeks begin on Mondays, while some have the weeks begin on
  Sundays.

  Regardless, this can be used as a rough guide when dealing with those
  handy little coupon books that list such things.
y
  Y. Computer Requirements
  ──────────────────────────────────────────────────────────────────────────
  Any sane configuration of IBM compatible computer, monitor type, graphics
  card (or none), disk drives and / or hard drives may be used with BILLS.
  It is rather a memory hog, though, so the more memory you have the better.
  To get a reasonable performance in speed the following minimums are
  recommended:

                      A hard drive
                      A floppy disk (for backups)
                      640 K memory
                      A 286 or better processor

  No restrictions are made on graphics cards or monitor types. No mice or
  other pointing devices are necessary (nor are they usable in this
  version).
z
  Z. Anomalies
  ──────────────────────────────────────────────────────────────────────────
  Following are known bugs or otherwise unfriendly or disturbing features.

  o  Memory allocation. If available memory is short, some features may be
     marginally accessible. These include the calculator, scratch pad,
     searching, sorting, and transaction display, (to say nothing of adding
     new records). BILLS is highly dependent on the size of the input file
     and available memory for its safety and peace of mind. If your data
     file gets much over 125,000 bytes, you should probably break it up.
     This is easiest done by copying the data file, then deleting half the
     records from the first, and the other half from the second, ending up
     with, say, A-M.BDB and N-Z.BDB.

  o  Memory deallocation. The deallocation routine of the compiler's library
     occasionally ralphs when releasing memory. There has been no
     discernable pattern to this circumstance. This problem has occurred
     only when loading many different large files in the same run.
@
  Z. Anomalies - continued
  ──────────────────────────────────────────────────────────────────────────
  o  The note operation is patchy. The alternative is adding a real word
     editor and dynamic sizes, which may get done at some point. It was felt
     that limiting the notes would cut down on memory usage, which is a big
     issue at present.

  o  The counters displayed when the program quits may give inaccurate
     information. For instance, if you edit records but choose not to save
     the list when quitting the program, the display will still show the
     results of records added, edited, purged, number of transactions added,
     etc.

  o  The first call in a run to the help file is a bit slow. BILLS.HLP is
     scanned to calculate offsets, which are then referenced whenever a
     topic is chosen. This is much faster than scanning the file for each
     topic, but leaves things a bit vulnerable. BILLS.HLP is pretty much
     straight ASCII, with an obvious format and some flags here and there.
     If you do tinker with it you may get wondrous results. DO NOT EDIT
     BILLS.HLP UNLESS YOU KNOW WHAT YOU'RE DOING!
@
  Z. Anomalies - continued
  ──────────────────────────────────────────────────────────────────────────
  o  In the event that a file loads successfully, but there is no more
     memory is available to add records, transactions, use the calculator or
     scratch pad, BILLS halts. This is a trade off, believe it or not - if a
     write error occurs (which can easily happen with little or no free
     memory), the whole file can be lost. For now, it was felt that it would
     be better to loose a few modifications than all data.

  o  When viewing the 'Summary of All Accounts' display - Totals in the
     Utilities Menu (and all other totalling options, really) - it should be
     taken into consideration that as time goes on a user might add new
     categories, split or merge files, etc. A really accurate tracking of
     payment stats will usually happen only when the same accounts are used
     for a year or more. If one, say, adds rent to their data base in July,
     then from July on an increase in payments will be noted by BILLS,
     (which has no knowledge of what you are paying out but not recording,
     of course). One should also be aware that this option ignores all
     records that are purged - thus its figures may not be the same as those
     resulting from other operations.
~

; end of bills.hlp
